/**
 * 一键登录接口的回调监听
 * @param result
 *  status：返回码，6000 代表loginToken获取成功，6001 代表loginToken获取失败，其他返回码详见描述
 *  message：返回码的解释信息，若获取成功，内容信息代表loginToken。
 *  data：成功时为对应运营商，CMCC代表中国移动，CUCC代表中国联通，CTCC代表中国电信。失败时可能为null
 * @discussion 调用 loginAuth 接口后，可以通过添加此监听事件来监听接口的返回结果
 */
typedef SDKClickEventListener = void Function(ListenerEventData result);
typedef SDKTokenEventListener = void Function(ListenerEventData result);
// 监听添加的自定义控件的点击事件
// typedef AuthRegisterEventListener = void Function(Map<dynamic,dynamic> result);
typedef CustomClickEventListener = void Function(String result);

class EventHandlers {
  static final EventHandlers _instance = new EventHandlers._internal();

  EventHandlers._internal();

  factory EventHandlers() => _instance;

  SDKClickEventListener sdkClickEvent;
  SDKTokenEventListener sdkTokenEvent;
  CustomClickEventListener customClickEvent;
  // Map<String, AuthRegisterEventListener> authRegisterEventMap = Map();
}


/// 监听返回类
class ListenerEventData {
  int status; // 返回码，具体事件返回码请查看（https://developer.umeng.com/docs/143070/detail/144780#h3-6-2-7-13）
  String message; //事件描述、事件返回值等
  dynamic data; // 成功时为对应运营商，CMCC代表中国移动，CUCC代表中国联通，CTCC代表中国电信。失败时可能为null

  ListenerEventData() {
    print("ListenerEventData init");
  }

  ListenerEventData.fromJson(Map<dynamic, dynamic> json)
      : status = int.parse(json['code']),
        message = json['msg'],
        data = json['data'];

  Map toMap() {
    return {
      'status': status ??= null,
      'message': message ??= null,
      'data': data ??= null
    };
  }
}